package com.five.welcome.result;

import lombok.Data;

/**
 * 全局统一返回结果类
 * @author Ywt
 */
@Data
public class Result<T> {
    private Integer code;//状态码
    private String message;//返回消息
    private T data;//返回数据

    /**
     * 私有化构造方法，禁止在其它类创建对象
     */
    private Result(){}

    /**
     * 成功执行，不返回数据
     * @return
     */
    public static<T> Result<T> ok(){
        Result<T> result = new Result<T>();
        result.setCode(ResultCode.SUCCESS);
        result.setMessage("执行成功");
        return result;
    }

    /**
     * 成功执行，并返回数据
     * @param data
     * @param <T>
     * @return
     */
    public static<T> Result<T> ok(T data){
        Result<T> result = new Result<T>();
        result.setCode(ResultCode.SUCCESS);
        result.setMessage("执行成功");
        result.setData(data);
        return result;
    }

    /**
     * 失败
     * @return
     */
    public static<T> Result<T> error(String message){
        Result<T> result = new Result<T>();
        result.setCode(ResultCode.ERROR);
        result.setMessage(message);
        return result;
    }

    public static<T> Result<T> error(T data){
        Result<T> result = new Result<T>();
        result.setCode(ResultCode.ERROR);
        result.setData(data);
        return result;
    }
}